package job;

import java.io.*;
import java.util.*;

public class test {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int t = cin.nextInt();
        while (t-- > 0) {
            int n = cin.nextInt();
            long v = cin.nextLong();
            long[] nums = new long[n];
            for (int i = 0; i < n; i++) {
                nums[i] = cin.nextLong();
            }

            // dp[0][j]: 不强化 nums[0] ~ nums[j] 的子序和
            // dp[1][j]: 强化 nums[0] ~ nums[j] 中的某一个的子序和，又分为强化 nums[j] 和 不强化 nums[j]
            long[][] dp = new long[2][n];
            dp[0][0] = nums[0];
            dp[1][0] = v;
            long maxSum = Math.max(dp[0][0], dp[1][0]);
            for (int j = 1; j < n; j++) {
                // 不强化时 nums[0] ~ nums[j] 的子序和
                dp[0][j] = Math.max(dp[0][j - 1] + nums[j], nums[j]);
                // 强化 nums[j]：Math.max(dp[0][j - 1] + v, v)
                // 不强化 nums[j]，强化 nums[0] ~ nums[j-1] 中的某一个，即 dp[1][j - 1]：dp[1][j - 1] + nums[j]
                dp[1][j] = Math.max(Math.max(dp[0][j - 1] + v, v), dp[1][j - 1] + nums[j]);
                maxSum = Math.max(maxSum, Math.max(dp[0][j], dp[1][j]));
            }
            System.out.println(maxSum);
        }
    }
}